home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xa / CellDialog.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  10.9 KB  |  392 lines

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.app.DialogFactory;
  4. import com.extensibility.app.UI;
  5. import com.extensibility.rock.RDialog;
  6. import com.extensibility.util.Debug;
  7. import com.extensibility.xml.DTDParser;
  8. import com.extensibility.xml.ParserException;
  9. import com.extensibility.xml.URI;
  10. import java.awt.BorderLayout;
  11. import java.awt.Component;
  12. import java.awt.Container;
  13. import java.awt.Cursor;
  14. import java.awt.Dialog;
  15. import java.awt.Dimension;
  16. import java.awt.FlowLayout;
  17. import java.awt.Font;
  18. import java.awt.GridBagConstraints;
  19. import java.awt.GridBagLayout;
  20. import java.awt.Window;
  21. import java.awt.event.ItemEvent;
  22. import java.awt.event.ItemListener;
  23. import java.util.Enumeration;
  24. import java.util.Vector;
  25. import javax.swing.BorderFactory;
  26. import javax.swing.Box;
  27. import javax.swing.DefaultListModel;
  28. import javax.swing.Icon;
  29. import javax.swing.JButton;
  30. import javax.swing.JCheckBox;
  31. import javax.swing.JComboBox;
  32. import javax.swing.JComponent;
  33. import javax.swing.JDialog;
  34. import javax.swing.JFrame;
  35. import javax.swing.JLabel;
  36. import javax.swing.JList;
  37. import javax.swing.JPanel;
  38. import javax.swing.JScrollPane;
  39. import javax.swing.JTabbedPane;
  40. import javax.swing.JTextField;
  41. import javax.swing.border.EmptyBorder;
  42. import javax.swing.event.ListSelectionListener;
  43. import javax.swing.text.JTextComponent;
  44.  
  45. public class CellDialog extends RDialog implements ItemListener {
  46.    protected static final int MODE_DEFINE = 1;
  47.    protected static final int MODE_EDIT = 2;
  48.    protected static final int MODE_NONE = 0;
  49.    JLabel lblPrompt;
  50.    JButton btnSave;
  51.    JButton btnCancel;
  52.    JButton btnApply;
  53.    JButton btnDelete;
  54.    JButton btnInsert;
  55.    JScrollPane scroll;
  56.    JPanel btnPanel;
  57.    JLabel lblOwner;
  58.    String orgValue;
  59.    JTabbedPane tabs;
  60.    JTextField txtOwner;
  61.    JComboBox popOwner;
  62.    JComponent heading;
  63.    int mode;
  64.    String ownerName;
  65.    boolean canceled;
  66.    JTextComponent editor;
  67.    JCheckBox chkOpenModel;
  68.    JComponent enclosure;
  69.    SchemaDoc doc;
  70.    boolean applied;
  71.    boolean openModel = false;
  72.    protected ListSelectionListener listSelectionListener = new 1(this);
  73.    URI uri;
  74.  
  75.    public CellDialog(JFrame var1, SchemaDoc var2) {
  76.       super(var1, true);
  77.       this.doc = var2;
  78.    }
  79.  
  80.    protected JComponent createEnclosure(JComponent var1) {
  81.       return null;
  82.    }
  83.  
  84.    protected JTextComponent createEditor() {
  85.       Debug.assertAbstract();
  86.       return null;
  87.    }
  88.  
  89.    protected JPanel createButtonPanel() {
  90.       Debug.assertAbstract();
  91.       return null;
  92.    }
  93.  
  94.    protected String getListTab(int var1) {
  95.       return null;
  96.    }
  97.  
  98.    protected Enumeration getList(int var1) {
  99.       return null;
  100.    }
  101.  
  102.    public boolean getOpenModel() {
  103.       return this.openModel;
  104.    }
  105.  
  106.    public void setOpenModel(boolean var1) {
  107.       this.openModel = var1;
  108.       this.chkOpenModel.setSelected(var1);
  109.       this.chkOpenModel.setVisible(true);
  110.       this.chkOpenModel.setEnabled(true);
  111.    }
  112.  
  113.    private void doOpenModel(boolean var1) {
  114.       this.openModel = var1;
  115.    }
  116.  
  117.    protected void insertName(String var1) {
  118.       this.editor.replaceSelection(var1);
  119.    }
  120.  
  121.    protected boolean doSave() {
  122.       if (this.getMode() == 1 && !DTDParser.isName(this.getCellOwner())) {
  123.          DialogFactory.stop(this, (new ParserException(224, this.getCellOwner())).getMessage());
  124.          return false;
  125.       } else {
  126.          return true;
  127.       }
  128.    }
  129.  
  130.    protected void doDelete() {
  131.       ((Component)this).setVisible(false);
  132.       ((Window)this).dispose();
  133.    }
  134.  
  135.    protected void doApply() {
  136.       this.applied = true;
  137.    }
  138.  
  139.    protected void doCancel() {
  140.       ((Component)this).setVisible(false);
  141.       this.canceled = true;
  142.       ((Window)this).dispose();
  143.    }
  144.  
  145.    protected void setCellOwner(String var1, String var2) {
  146.       this.ownerName = var1;
  147.       this.orgValue = this.getText();
  148.    }
  149.  
  150.    protected String getCellOwner() {
  151.       if (this.mode == 2) {
  152.          return this.ownerName;
  153.       } else {
  154.          return this.mode == 1 ? this.txtOwner.getText() : this.ownerName;
  155.       }
  156.    }
  157.  
  158.    public SchemaDoc getSchemaDoc() {
  159.       return this.doc;
  160.    }
  161.  
  162.    protected int getMode() {
  163.       return this.mode;
  164.    }
  165.  
  166.    public boolean commitPendingEdits(boolean var1) {
  167.       return true;
  168.    }
  169.  
  170.    public void itemStateChanged(ItemEvent var1) {
  171.       if (this.commitPendingEdits(true)) {
  172.          if (!this.getText().equals(this.orgValue)) {
  173.             int var2 = DialogFactory.saveChanges(this, new String[]{this.ownerName});
  174.             if (var2 == 2) {
  175.                return;
  176.             }
  177.  
  178.             if (var2 == 0 && !this.doSave()) {
  179.                return;
  180.             }
  181.          }
  182.  
  183.          this.setCellOwner((String)var1.getItem(), (String)null);
  184.       }
  185.    }
  186.  
  187.    public void prepare(String var1, String var2, Object var3) {
  188.       this.lblPrompt = new JLabel(var2);
  189.       if (var3 == null) {
  190.          this.txtOwner = UI.createTextField(UI.getString("cell.dialog.enter.here"));
  191.          this.txtOwner.setMinimumSize(new Dimension(200, 5));
  192.          this.txtOwner.setSize(200, 5);
  193.          this.heading = this.txtOwner;
  194.          this.mode = 1;
  195.       } else if (var3 instanceof String) {
  196.          this.lblOwner = new JLabel((String)var3);
  197.          this.heading = this.lblOwner;
  198.          this.mode = 0;
  199.       } else if (var3 instanceof Enumeration) {
  200.          Vector var4 = new Vector();
  201.  
  202.          while(((Enumeration)var3).hasMoreElements()) {
  203.             var4.addElement(((Enumeration)var3).nextElement());
  204.          }
  205.  
  206.          this.popOwner = new JComboBox(var4);
  207.          this.popOwner.setEditable(false);
  208.          this.popOwner.addItemListener(this);
  209.          this.ownerName = (String)this.popOwner.getSelectedItem();
  210.          this.heading = this.popOwner;
  211.          this.mode = 2;
  212.       } else {
  213.          Debug.assert(false, "Unknown headingObj");
  214.       }
  215.  
  216.       this.editor = this.createEditor();
  217.       this.editor.setBorder(new EmptyBorder(4, 4, 4, 4));
  218.       if (this.orgValue != null) {
  219.          this.editor.setText(this.orgValue);
  220.       }
  221.  
  222.       this.editor.setCursor(new Cursor(2));
  223.       this.btnPanel = this.createButtonPanel();
  224.       if (this.btnPanel != null) {
  225.          this.btnPanel.setVisible(true);
  226.       }
  227.  
  228.       this.btnSave = new JButton(UI.getString("cell.dialog.ok"));
  229.       this.btnSave.setMnemonic(UI.getMnemonic("cell.dialog.ok"));
  230.       this.btnSave.addActionListener(new 2(this));
  231.       this.chkOpenModel = new JCheckBox(UI.getString("dialog.model.open"));
  232.       this.chkOpenModel.addItemListener(new 3(this));
  233.       this.chkOpenModel.setVisible(false);
  234.       this.chkOpenModel.setEnabled(false);
  235.       this.btnApply = new JButton(UI.getString("dialog.apply"));
  236.       this.btnApply.setMnemonic(UI.getMnemonic("dialog.apply"));
  237.       this.btnApply.addActionListener(new 4(this));
  238.       this.btnApply.setVisible(this.mode == 0);
  239.       this.btnDelete = new JButton(UI.getString("dialog.delete"));
  240.       this.btnDelete.setMnemonic(UI.getMnemonic("dialog.delete"));
  241.       this.btnDelete.addActionListener(new 5(this));
  242.       this.btnDelete.setVisible(this.mode == 2);
  243.       this.btnCancel = new JButton(UI.getString("dialog.cancel"));
  244.       this.btnCancel.setMnemonic(UI.getMnemonic("dialog.cancel"));
  245.       this.btnCancel.addActionListener(new 6(this));
  246.       int var9 = 0;
  247.  
  248.       while(true) {
  249.          String var5 = this.getListTab(var9);
  250.          if (var5 == null) {
  251.             this.scroll = new JScrollPane(this.editor);
  252.             JPanel var10 = new JPanel(new GridBagLayout());
  253.             GridBagConstraints var12 = new GridBagConstraints();
  254.             var12.ipadx = 8;
  255.             ((Container)var10).add(this.lblPrompt, var12);
  256.             var12.gridx = 1;
  257.             var12.fill = 2;
  258.             var12.weightx = (double)0.75F;
  259.             ((Container)var10).add(this.heading, var12);
  260.             ((JComponent)var10).setBorder(BorderFactory.createEmptyBorder(8, 12, 8, 12));
  261.             Object var13 = new JPanel(new BorderLayout());
  262.             if (this.btnPanel != null) {
  263.                JPanel var14 = new JPanel(new FlowLayout(0));
  264.                ((Container)var14).add(this.btnPanel);
  265.                ((JComponent)var14).setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
  266.                ((Container)var13).add(var14, "North");
  267.             }
  268.  
  269.             ((JDialog)this).getContentPane().setLayout(new BorderLayout());
  270.             if (this.tabs != null) {
  271.                this.tabs.setBorder(BorderFactory.createEmptyBorder(0, 0, 8, 8));
  272.                ((Container)var13).add(this.tabs, "East");
  273.             }
  274.  
  275.             this.scroll.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(0, 8, 8, 8), this.scroll.getBorder()));
  276.             ((Container)var13).add(this.scroll, "Center");
  277.             JPanel var15 = new JPanel(new FlowLayout(1));
  278.             ((Container)var15).add(this.chkOpenModel);
  279.             this.chkOpenModel.setAlignmentY(0.0F);
  280.             ((Container)var15).add(Box.createHorizontalStrut(8));
  281.             ((Container)var15).add(this.btnDelete);
  282.             ((Container)var15).add(this.btnApply);
  283.             ((Container)var15).add(Box.createHorizontalStrut(8));
  284.             ((Container)var15).add(this.btnCancel);
  285.             ((Container)var15).add(this.btnSave);
  286.             ((JComponent)var15).setBorder(BorderFactory.createEmptyBorder(0, 8, 8, 8));
  287.             ((JDialog)this).getContentPane().add(var10, "North");
  288.             this.enclosure = this.createEnclosure((JComponent)var13);
  289.             if (this.enclosure != null) {
  290.                var13 = this.enclosure;
  291.             }
  292.  
  293.             ((JDialog)this).getContentPane().add((Component)var13, "Center");
  294.             ((JDialog)this).getContentPane().add(var15, "South");
  295.             ((Component)this).setSize(540, 310);
  296.             ((Dialog)this).setTitle(var1);
  297.             ((Window)this).addWindowListener(new 7(this));
  298.             ((JDialog)this).setDefaultCloseOperation(0);
  299.             ((Window)this).addWindowListener(new 8(this));
  300.             if (this.mode == 2) {
  301.                this.setCellOwner((String)this.popOwner.getSelectedItem(), (String)null);
  302.             }
  303.  
  304.             return;
  305.          }
  306.  
  307.          if (var9 == 0) {
  308.             this.tabs = new JTabbedPane(1);
  309.             Font var6 = UI.getAppFont();
  310.             if (var6 != null) {
  311.                this.tabs.setFont(var6);
  312.             }
  313.          }
  314.  
  315.          DefaultListModel var11 = new DefaultListModel();
  316.          Enumeration var7 = this.getList(var9);
  317.  
  318.          while(var7.hasMoreElements()) {
  319.             var11.addElement(var7.nextElement());
  320.          }
  321.  
  322.          JList var8 = new JList(var11);
  323.          var8.setPrototypeCellValue(UI.getString("cell.dialog.list.proto"));
  324.          var8.setSelectionMode(0);
  325.          var8.addListSelectionListener(this.listSelectionListener);
  326.          this.tabs.addTab(var5, new JScrollPane(var8));
  327.          ++var9;
  328.       }
  329.    }
  330.  
  331.    public void setURI(URI var1) {
  332.       if (var1 != null && var1.equals(this.getSchemaDoc().getURI())) {
  333.          var1 = null;
  334.       }
  335.  
  336.       this.uri = var1;
  337.       if (var1 == null) {
  338.          this.lblPrompt.setIcon((Icon)null);
  339.          this.lblPrompt.setToolTipText((String)null);
  340.       } else {
  341.          this.lblPrompt.setIcon(UI.getIcon(this.doc.isEditable(this.uri) ? "uri.gif" : "uri_ro.gif"));
  342.          this.lblPrompt.setToolTipText(var1.getShortName());
  343.          this.lblPrompt.setHorizontalTextPosition(2);
  344.       }
  345.  
  346.    }
  347.  
  348.    public URI getURI() {
  349.       return this.uri;
  350.    }
  351.  
  352.    public void addNotify() {
  353.       super.addNotify();
  354.       ((RDialog)this).installDefault(this.btnSave);
  355.       ((RDialog)this).installEscape(this.btnCancel);
  356.       if (this.txtOwner != null) {
  357.          ((RDialog)this).installDefault(this.txtOwner);
  358.       }
  359.  
  360.       ((RDialog)this).installDefault(this.editor);
  361.    }
  362.  
  363.    public void select(String var1) {
  364.       Debug.assert(this.popOwner != null, "only defined when editing ...");
  365.  
  366.       for(int var2 = 0; var2 < this.popOwner.getItemCount(); ++var2) {
  367.          if (this.popOwner.getItemAt(var2).equals(var1)) {
  368.             this.popOwner.setSelectedIndex(var2);
  369.             return;
  370.          }
  371.       }
  372.  
  373.    }
  374.  
  375.    public String getText() {
  376.       return this.editor.getText();
  377.    }
  378.  
  379.    public void setText(String var1) {
  380.       this.editor.setText(var1);
  381.       if (this.orgValue == null) {
  382.          this.orgValue = var1;
  383.       }
  384.  
  385.    }
  386.  
  387.    // $FF: synthetic method
  388.    static void access$7000071(CellDialog var0, boolean var1) {
  389.       var0.doOpenModel(var1);
  390.    }
  391. }
  392.